// Copyright (c) Appeon. All rights reserved.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

using System;

namespace SnapObjects.Data
{
    internal class DataParserFactory
    {
        public static IDataPackerParser GetDataPackerParser(DataFormat format)
        {
            switch (format)
            {
                case DataFormat.Json: return new JsonPackerParser();
                case DataFormat.Xml: return new XmlPackerParser();
                default: throw new NotSupportedException(format.ToString());
            }
        }

        public static IDataUnpackerParser<T> GetUnpackerParser<T>(DataFormat format)
        {
            switch (format)
            {
                case DataFormat.Json: return new JsonUnPackerParser<T>();
                case DataFormat.Xml: return new XmlUnPackerParser<T>();
                default: throw new NotSupportedException(format.ToString());
            }
        }

        public static IDataUnpackerParser GetUnpackerParser(Type dataType, DataFormat format)
        {
            switch (format)
            {
                case DataFormat.Json: return new JsonUnPackerParser(dataType);
                case DataFormat.Xml: return new XmlUnPackerParser(dataType);
                default: throw new NotSupportedException(format.ToString());
            }
        }
    }
}
